using System.Collections.Generic;

namespace SupplierCustomerManagement.Read.API.Dtos.ReportForms
{
    public class ProductionOverviewDto
    {
        public string Period { get; set; } = "month"; // month/year
        public string Month { get; set; } = string.Empty; // YYYY-MM

        public EweInventoryChangeSummaryDto EweInventoryChange { get; set; } = new();
        public LambInventorySummaryDto LambInventory { get; set; } = new();
        public BreedingStatsDto Breeding { get; set; } = new();
        public LambingStatsDto Lambing { get; set; } = new();
        public WeaningStatsDto Weaning { get; set; } = new();
    }

    public class EweInventoryChangeSummaryDto
    {
        public int Beginning { get; set; }
        public int ReserveToEwe { get; set; }
        public int Purchase { get; set; }
        public int AllocationIn { get; set; }
        public int Death { get; set; }
        public int Culling { get; set; }
        public int Sales { get; set; }
        public int AllocationOut { get; set; }
        public int Other { get; set; }
        public int Ending { get; set; }
    }

    public class LambInventorySummaryDto
    {
        public int Beginning { get; set; }
        public int Lambing { get; set; }
        public int Purchase { get; set; }
        public int AllocationIn { get; set; }
        public int InventoryIn { get; set; }
        public int RecoveryIn { get; set; }
        public int ReserveIn { get; set; }
        public int Death { get; set; }
        public int Sales { get; set; }
        public int AllocationOut { get; set; }
        public int InventoryOut { get; set; }
        public int SeedlingOut { get; set; }
        public int Other { get; set; }
        public int Ending { get; set; }
    }

    public class BreedingStatsDto
    {
        public int ReserveMating { get; set; }
        public int WeaningMating { get; set; }
        public int ReturnMating { get; set; }
        public int NotPregnantMating { get; set; }
        public int EmptyMating { get; set; }
        public int AbortionMating { get; set; }
        public int OtherMating { get; set; }
        public int TotalMating { get; set; }
    }

    public class LambingStatsDto
    {
        public int LitterCount { get; set; }
        public int HealthyLamb { get; set; }
        public int WeakLamb { get; set; }
        public int Stillbirth { get; set; }
        public int Mummy { get; set; }
        public int Deformed { get; set; }
        public int Abnormal { get; set; }
        public int TotalLiveBirth { get; set; }
        public int TotalLiveLamb { get; set; }
        public int AliveCount { get; set; }
        public int DeadCount { get; set; }
    }

    public class WeaningStatsDto
    {
        public int TotalWeaned { get; set; }
        public int WeanedLitter { get; set; }
        public decimal TotalWeight { get; set; }
        public decimal AverageWeightPerLitter { get; set; }
    }
}
